home *** CD-ROM | disk | FTP | other *** search
- // GETINFO SCRIPTING
- // OFDb (DE) import with small picture
-
- (***************************************************
- * Movie importation script for: *
- * Online-Filmdatenbank(OFDb), *
- * http://www.ofdb.de *
- * *
- * (c) 2002 Fabian Filipczyk FFJaro@gmx.de *
- * *
- * *
- * For use with Ant Movie Catalog 3.4.0 *
- * www.antp.be/software/moviecatalog *
- * *
- * This program is free software; you can *
- * redistribute it and/or modify it under the *
- * terms of the GNU General Public License as *
- * published by the Free Software Foundation; *
- * either version 2 of the License, or (at your *
- * option) any later version. *
- ***************************************************)
-
- program OFDB_DE;
- var
- MovieName: string;
-
- function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer;
- var
- i: Integer;
- begin
- result := -1;
- if StartAt < 0 then
- StartAt := 0;
- for i := StartAt to List.Count-1 do
- if Pos(Pattern, List.GetString(i)) <> 0 then
- begin
- result := i;
- Break;
- end;
- end;
- ///////////////////////////////////////////////////////////////////
-
- procedure AnalyzePage(Address: string);
- var
- Page: TStringList;
- LineNr: Integer;
- begin
- Page := TStringList.Create;
- Page.Text := GetPage(Address);
- // if pos('<title>OFDb - Suchergebnis', Page.Text) = 0 then
- if pos('<title>OFDb - Übersicht der Filmdaten</title>', Page.Text) > 0 then
- begin
- SetField(fieldURL, Address);
- AnalyzeMoviePage(Page)
- end else
- begin
- PickTreeClear;
- LineNr := FindLine('<b>Titel:</b>', Page, 0);
- if LineNr > 0 then
- begin PickTreeAdd('Filme :', '');
- AddMoviesTitles(Page, LineNr);
- if PickTreeExec(Address) then
- AnalyzePage(Address);
- end;
- end;
- Page.Free;
- end;
-
-
- procedure AnalyzeMoviePage(Page: TStringList);
- var
- TomString, Line, Temp, Value: string;
- LineNr, IntValue: Integer;
- BeginPos, EndPos: Integer;
- begin
-
- // Picture
-
- //LineNr := FindLine('http://www.hsi-infopool.de/zensur/movies/images/film', Page, 0);
- //http://www.ofdb.de/
- //http://www.ofdb.de/images/film/0/179.jpg
- //images/film/0/179.jpg
-
- LineNr := FindLine('images/film/', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('<img src="', Line) + 10;
- // BeginPos := pos('<img src=''', Line) + 10;
- if BeginPos > 10 then
- begin
- // EndPos := pos(' alt=', Line)-2;
- EndPos := pos(' alt=', Line)-1;
- // Value := copy(Line, BeginPos, EndPos - BeginPos);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- TomString:= 'http://www.ofdb.de/'+Value;
- //Input('OFDb', TomString, MovieName)
- GetPicture(TomString, False);
- end;
- end;
-
- // Original & Translated Title
- LineNr := FindLine('Originaltitel:</font>', Page, 0);
- if LineNr > -1 then
- begin
- LineNr:= LineNr+2;
- Line := Page.GetString(LineNr);
- BeginPos := pos('class="Daten"><b>', Line) + 17;
- EndPos := pos('</b></font>', Line);
- Value := copy(Line, BeginPos, EndPos - BeginPos);
- SetField(fieldOriginalTitle, Value);
- LineNr := Findline('sans-serif" size="3"><b>', Page, 0);
- if LineNr > -1 then
- begin
- Line:= Page.GetString(LineNr);
- BeginPos := pos('sans-serif" size="3"><b>',Line) +24;
- Endpos := pos('</b></font></td>',Line);
- Value := copy(Line,BeginPos, Endpos-Beginpos);
- SetField(fieldTranslatedTitle,Value);
- end;
- end;
-
- //Country
- LineNr := Findline('Herstellungsland:', Page, 0);
- if LineNr > -1 then
- begin
- LineNr := LineNr+3;
- Line:= Page.GetString(LineNr);
- Delete(Line, 1, pos('<a',Line)-1);
- BeginPos := pos('">',Line) +2;
- Endpos := pos('</a><br>',Line);
- Value := copy(Line,BeginPos, Endpos-Beginpos);
- SetField(fieldCountry, Value);
- end;
-
- // Year
- LineNr := Findline('Erscheinungsjahr:', Page, 0);
- if LineNr > -1 then
- begin
- LineNr := LineNr+3;
- Line:= Page.GetString(LineNr);
- Delete(Line, 1, pos('<a',Line)-1);
- BeginPos := pos('">',Line) +2;
- Endpos := pos('</a></b>',Line);
- Value := copy(Line,BeginPos, Endpos-Beginpos);
- SetField(fieldYear, Value);
- end;
-
- // Category
- LineNr := Findline('Genre(s):', Page, 0);
- if LineNr > -1 then
- begin
- Value:= '';
- LineNr := LineNr+2;
- Line:= Page.GetString(LineNr);
- repeat
- Delete(Line, 1, pos('<a',Line)-1);
- BeginPos := pos('">', Line);
- if BeginPos > 0 then
- begin
- Delete(Line, 1, BeginPos +1 );
- Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
- Value:= Value+', '+ Temp ;
- end;
- until (BeginPos < 1);
- Value:= copy(Value, 3,length(Value)-1);
- SetField(fieldCategory, Value);
- end;
-
- // Actors
- LineNr := Findline('Darsteller', Page, 0);
- if LineNr > -1 then
- begin
- LineNr := LineNr+3;
- Line:= Page.GetString(LineNr);
- if pos('[mehr]', Line) > 0 then
- begin
- BeginPos := pos('<a href="view.php?page=film',Line) +9;
- Endpos := pos('">[mehr]</a>',Line);
- Value := copy(Line,BeginPos, Endpos-Beginpos);
- GetActors(Value);
- end else
- begin
- Value:= '';
- repeat
- Delete(Line, 1, pos('<a',Line)-1);
- BeginPos := pos('">', Line);
- if BeginPos > 0 then
- begin
- Delete(Line, 1, BeginPos +1 );
- Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
- Value:= Value+', '+ Temp ;
- end;
- until (BeginPos < 1);
- Value:= copy(Value, 3,length(Value)-1);
- SetField(fieldActors, Value);
- end;
- end;
-
- //Director
- LineNr := Findline('Regie', Page, 0);
- if LineNr > -1 then
- begin
- Value:= '';
- LineNr := LineNr+3;
- Line:= Page.GetString(LineNr);
- repeat
- Delete(Line, 1, pos('<a',Line)-1);
- BeginPos := pos('">', Line);
- if BeginPos > 0 then
- begin
- Delete(Line, 1, BeginPos +1 );
- Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
- Value:= Value+', '+ Temp ;
- end;
- until (BeginPos < 1);
- Value:= copy(Value, 3,length(Value)-1);
- SetField(fieldDirector, Value);
- end;
-
- //Description
- LineNr := Findline('<b>Inhalt:</b>', Page, 0);
- if LineNr > -1 then
- begin
- LineNr:=Findline('<a href="view.php?page=inhalt', Page,0);
- Line:= Page.GetString(LineNr);
- BeginPos := pos('<a href="view.php?page=inhalt', Line)+9;
- EndPos:= pos('"><b>[mehr]', Line);
- Value:=copy(Line, BeginPos, EndPos - BeginPos);
- GetDescriptions(Value);
- end;
-
- //Rating
- LineNr := Findline('<br>Note:', Page, 0);
- if LineNr > -1 then
- begin
- Line:= Page.GetString(LineNr);
- BeginPos := pos('<br>Note:',Line) +10;
- EndPos:= pos(' ',Line);
- Value := copy(Line,BeginPos, Endpos-Beginpos);
- Value := IntToStr(Round(StrToInt(StrGet(Line, BeginPos), 0) + (StrToInt(StrGet(Line, BeginPos +3), 0) /10)));
- SetField(fieldRating,Value );
- end;
- DisplayResults;
- end;
-
-
- procedure GetActors(Address: string);
- var
- Line,Temp, Value: string;
- LineNr: Integer;
- BeginPos, EndPos: Integer;
- Page: TStringList;
- begin
-
- Page := TStringList.Create;
- Page.Text := GetPage('http://www.ofdb.de/'+Address);
- LineNr := Findline('Darsteller', Page, 0);
- if LineNr > -1 then
- begin
- Value:= '';
- LineNr := LineNr+3;
- Line:= Page.GetString(LineNr);
- repeat
- Delete(Line, 1, pos('<a',Line)-1);
- BeginPos := pos('">', Line);
- if BeginPos > 0 then
- begin
- Delete(Line, 1, BeginPos +1 );
- Temp := copy(Line, 1, pos('</a><br>', Line)-1 );
- Value:= Value+', '+ Temp ;
- end;
- until (BeginPos < 1);
- Value:= copy(Value, 3,length(Value)-1);
- SetField(fieldActors, Value);
- end;
- Page.Free;
- end;
-
-
- procedure GetDescriptions(Address: string);
- var
- Line, Temp,Value: string;
- LineNr: Integer;
- BeginPos, EndPos: Integer;
- Page: TStringList;
-
- begin
- Temp:= '';
- Page := TStringList.Create;
- Page.Text := GetPage('http://www.ofdb.de/' + Address);
- LineNr := FindLine('Eine Inhaltsangabe von', Page, 0);
- if LineNr > -1 then
- begin
- Line := Page.GetString(LineNr);
- BeginPos := pos('</a></b><br><br>', Line) + 16;
- while (pos('<br />', Line) >0) do
- begin
- EndPos := pos('<br />', Line);
- Temp := Temp + copy(Line, BeginPos, EndPos - BeginPos);
- LineNr:=LineNr+1;
- Line:=Page.GetString(LineNr);
- BeginPos:=1;
- end;
- EndPos := pos('</font></p>', Line);
- Temp:= Temp + copy(Line, BeginPos, EndPos - BeginPos);
- Value:= Temp;
- SetField(fieldDescription, Value);
- end;
- Page.Free;
- end;
-
-
- procedure AddMoviesTitles(Page: TStringList; var LineNr: Integer);
- var
- Line: string;
- MovieTitle, MovieAddress: string;
- StartPos, EndPos: Integer;
-
- begin
- Line := Page.GetString(LineNr);
- repeat
- StartPos := pos('<a href=''view.php?page=film&fid=', Line);
- if StartPos > 0 then
- begin
- Delete(Line, 1, StartPos + 8);
- MovieAddress := copy(Line, 1, pos('''>', Line) - 1);
- StartPos := pos('''>', Line) +2;
- MovieTitle := copy(Line, StartPos, pos('</a>', Line) - StartPos);
- HTMLRemoveTags(MovieTitle);
- PickTreeAdd(MovieTitle , 'http://www.ofdb.de/' + MovieAddress);
- end;
- until (StartPos < 1);
- end;
-
- begin
- if CheckVersion(3,4,0) then
- begin
- MovieName := GetField(fieldOriginalTitle);
- if MovieName = '' then
- MovieName := GetField(fieldTranslatedTitle);
- if Input('OFDb', 'Bitte Titel eingeben :', MovieName) then
- begin
- AnalyzePage('http://www.ofdb.de/view.php?page=suchergebnis&SText='+UrlEncode(MovieName)+'&Kat=All');
- end;
- end else
- ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.4.0)');
- end.
-
-